             package com.java.diagnostics.visualizer.gc.hp.parser;
             
             import com.java.diagnostics.visualizer.data.SourceData;
             import com.java.diagnostics.visualizer.exceptions.GCAndMemoryVisualizerException;
             import com.java.diagnostics.visualizer.impl.factory.LogFactory;
             import com.java.diagnostics.visualizer.parser.vgc.VGCParser;
             import com.java.diagnostics.visualizer.properties.OutputProperties;
             import com.java.diagnostics.visualizer.sources.Source;
             import java.util.logging.Logger;
             
             public class HPVGCParser
               implements VGCParser
             {
               private static final String[] IS_PARSEABLE_CRITERIA = { "<GCH:", "<GC:" };
               private static final Logger TRACE = LogFactory.getTrace(HPVGCParser.class);
               protected final String className = getClass().getName();
               
               public boolean isParseableSource(Source source) throws GCAndMemoryVisualizerException {
                 TRACE.entering(this.className, "isParseableSource");
                 boolean answer = source.containsWithinReasonableDistanceOfStart(IS_PARSEABLE_CRITERIA);
                 TRACE.exiting(this.className, "isParseableSource");
                 return answer;
               }
               
               public SourceData parse(Source source, OutputProperties properties)
                 throws GCAndMemoryVisualizerException
               {
                 TRACE.entering(this.className, "parse");
                 SourceData sourceData = new InstanceHPVGCParser().parse(source, properties);
                 
                 TRACE.exiting(this.className, "parse");
                 return sourceData;
               }
             }


